.TH std::strstream::strstream 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::strstream::strstream \- std::strstream::strstream

.SH Synopsis
   strstream();                                               \fB(1)\fP (deprecated in C++98)
                                                                  (removed in C++26)
   strstream( char* s, int n, std::ios_base::openmode mode =      (deprecated in C++98)
                                  std::ios_base::in |         \fB(2)\fP (removed in C++26)
   std::ios_base::out );

   Constructs new input/output strstream and its underlying std::strstreambuf.

   1) Default-constructs the underlying std::strstreambuf, which creates a dynamically
   growing buffer, and initializes the base class with the address of the strstreambuf
   member.
   2) Initialized the base class with the address of the underlying std::strstreambuf
   member, which is initialized in one of the two possible ways, both of which use a
   user-provided fixed-size array:
   a) if (mode & app) == 0 (the app bit is not set in mode), constructs the buffer by
   calling strstreambuf(s, n, s). The behavior is undefined if there are less than n
   elements in the array whose first element is pointed to by s.
   b) if (mode & app) != 0 (the app bit is set in mode), constructs the buffer by
   calling strstreambuf(s, n, s + std::strlen(s)). The behavior is undefined if there
   are less than n elements in the array whose first element is pointed to by s or if
   the array does not contain a valid null-terminated character sequence.

.SH Parameters

   s    - char array to use as the output buffer
   n    - size of the array to be used for output
          specifies stream open mode. It is a bitmask type, the following constants are
          defined (although only app is used):

          Constant          Explanation
          app               seek to the end of stream before each write
   mode - binary            open in binary mode
          in                open for reading
          out               open for writing
          trunc             discard the contents of the stream when opening
          ate               seek to the end of stream immediately after open
          noreplace (C++23) open in exclusive mode

.SH Example


// Run this code

 #include <iostream>
 #include <string>
 #include <strstream>

 int main()
 {
     // dynamic buffer
     std::strstream s1;
     s1 << 1 << ' ' << 3.14 << " example" << std::ends;
     std::cout << "Buffer holds: '" << s1.str() << "'\\n";
     s1.freeze(false);

     int n;
     double d;
     std::string w;
     s1 >> n >> d >> w;
     std::cout << "Read back: n = " << n
               << ", d = " << d
               << ", w = '" << w << "'\\n";

     // static buffer
     char arr[20] = "-1 -3.14 ";
     std::strstream s2(arr, sizeof arr, std::ios_base::app);
     s2 << "another" << std::ends;
     std::cout << "Buffer holds: '" << s2.str() << "'\\n";
     s2 >> n >> d >> w;
     std::cout << "Read back: n = " << n
               << ", d = " << d
               << ", w = '" << w << "'\\n";
 }

.SH Output:

 Buffer holds: '1 3.14 example'
 Read back: n = 1, d = 3.14, w = 'example'
 Buffer holds: '-1 -3.14 another'
 Read back: n = -1, d = -3.14, w = 'another'

   Defect reports

   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.

     DR    Applied to           Behavior as published              Correct behavior
                      overload \fB(2)\fP only considered the case     considers cases (mode &
   LWG 115 C++98      mode & app == 0 (== has higher precedence app) == 0
                      than &)                                   and (mode & app) != 0

.SH See also

   constructor   constructs a strstreambuf object
                 \fI(public member function of std::strstreambuf)\fP
   constructor   constructs an istrstream object, optionally allocating the buffer
                 \fI(public member function of std::istrstream)\fP
   constructor   constructs an ostrstream object, optionally allocating the buffer
                 \fI(public member function of std::ostrstream)\fP
